#==============================================================#
# File      :   loki.yml
# Ctime     :   2021-04-03
# Mtime     :   2022-12-04
# Desc      :   Loki configuration file
# Path      :   /etc/loki/config.yml
# Author    :   Ruohang Feng (rh@vonng.com)
# License   :   AGPLv3
#==============================================================#

auth_enabled: false

server:
  http_listen_port: 3100
  grpc_listen_port: 9096

ingester:
  wal:
    enabled: true
    dir: {{ loki_data }}
  lifecycler:
    address: 127.0.0.1
    ring:
      kvstore:
        store: inmemory
      replication_factor: 1
    final_sleep: 0s
  chunk_idle_period: 1h       # Any chunk not receiving new logs in this time will be flushed
  max_chunk_age: 1h           # All chunks will be flushed when they hit this age, default is 1h
  chunk_target_size: 1048576  # Loki will attempt to build chunks up to 1.5MB, flushing first if chunk_idle_period or max_chunk_age is reached first
  chunk_retain_period: 30s    # Must be greater than index read cache TTL if using an index cache (Default index read cache TTL is 5m)
  max_transfer_retries: 0     # Chunk transfers disabled


schema_config:
  configs:
    - from: 2022-02-22
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h

storage_config:
  boltdb_shipper:
    active_index_directory: {{ loki_data }}/data/boltdb-shipper-active
    cache_location: {{ loki_data }}/data/boltdb-shipper-cache
    cache_ttl: 24h   # Can be increased for faster performance over longer query periods, uses more disk space
    shared_store: filesystem

  filesystem:
    directory: {{ loki_data }}/chunks

compactor:
  working_directory: {{ loki_data }}/tmp/boltdb-shipper-compactor
  shared_store: filesystem

# https://grafana.com/docs/loki/latest/configuration/#limits_config
limits_config:
  enforce_metric_name: false
  reject_old_samples: true
  reject_old_samples_max_age: 168h
  split_queries_by_interval: 15m
  ingestion_rate_mb: 16
  ingestion_burst_size_mb: 64
  max_entries_limit_per_query: 50000
  max_query_series: 10000

chunk_store_config:
  max_look_back_period: 0s

table_manager:
  index_tables_provisioning:
    enable_ondemand_throughput_mode: true
    enable_inactive_throughput_on_demand_mode: true
  chunk_tables_provisioning:
    enable_ondemand_throughput_mode: true
    enable_inactive_throughput_on_demand_mode: true
  retention_deletes_enabled: true
  retention_period: {{ loki_retention }}

frontend:
  max_outstanding_per_tenant: 4096

# https://grafana.com/docs/loki/latest/configuration/#query_range
query_range:
  align_queries_with_step: true
  parallelise_shardable_queries: false
  max_retries: 3
  cache_results: true
  results_cache:
    cache:
      embedded_cache:
        enabled: true
        max_size_mb: 100

ruler:
  storage:
    type: local
    local:
      directory: {{ loki_data }}/data/rules
  rule_path: {{ loki_data }}/data/rules-temp
  # alertmanager_url: http://127.0.0.1:9093
  ring:
    kvstore:
      store: inmemory
  enable_api: true

analytics:
  reporting_enabled: false